package com.pig4cloud.pigx.contract.executer.position.multiple_changer;

import com.pig4cloud.pigx.contract.bo.ContractPositionMultipleChangeBO;

/**
 * 仓位杠杆调整器
 *
 * @since 2022/8/17 11:12
 */
public interface PositionMultipleChanger {

	/**
	 * 获取仓位信息，并锁定
	 *
	 * @param bo bo
	 * @since 2022/8/17 21:21
	 */
	void getPosition(ContractPositionMultipleChangeBO bo);

	/**
	 * 判断是否支持
	 *
	 * @param bo bo
	 * @return {@link boolean}
	 * @since 2022/8/17 11:20
	 */
	boolean support(ContractPositionMultipleChangeBO bo);

	/**
	 * 杠杆调整
	 *
	 * @param bo bo
	 * @since 2022/8/17 11:15
	 */
	void change(ContractPositionMultipleChangeBO bo);

	/**
	 * 杠杆调整成功
	 *
	 * @param bo bo
	 * @since 2022/8/17 11:31
	 */
	void success(ContractPositionMultipleChangeBO bo);

	/**
	 * 杠杆调整程序发生异常
	 *
	 * @param bo bo
	 * @param e  异常
	 * @since 2022/8/17 11:31
	 */
	void fail(ContractPositionMultipleChangeBO bo, Exception e);
}
